Numerous computers and printers have been developed for home and office use. Occasionally, a de facto standard for hardware evolves by virtue of one company being the first to develop a particular piece of hardware. For example, the interface hardware for printers connected to a host computer evolved around what is commonly called the Centronics Printer Port. This is a data I/O port on the host computer for connecting a printer to the host computer via parallel printer interface cable. Computer manufacturers and printer manufacturers provided "Centronics Compatible" printer interfaces, making it the de facto standard for host computer-printer interfaces.
The Centronics Compatible standard has been adopted by the Institute for Electrical and Electronic Engineers (IEEE) as part of the P1284 standard "Standard Signalling Method for a Bidirectional Parallel Peripheral Interface for Personal Computers." While IEEE P1284 describes a bidirectional signalling method for two way communication between the printer and the host computer, the Centronics Compatible standard is adopted as the "Compatible Mode" for data transfers from the host computer to the printer.
Unlike modern printers, which typically contain microprocessors and memory, early printers typically had little or no computing power. These so called "dumb" printers are still frequently used today. Data is transferred from the host computer to the printer, one byte at a time, and stored in a data register such as a first-in first-out (FIFO) buffer. The printer receives printer data from the host computer via a computer interface cable. The printer data must be transferred from the host computer to the printer in the sequence in which the data will be printed. Typically, the data transferred from the host computer to the printer is data representing alphanumeric characters. The most common code for this type of data transfer is the American Standard Code for Information Interchange (ASCII) data bytes corresponding to the characters, which uses eight bit data bytes to represent various alphanumeric characters.
In an example illustrated in FIG. 1, a printer 10 will begin printing alphanumeric characters starting at the upper left-hand corner of a printed page 12. The ASCII character data bytes corresponding to the phrase "This is a test." are transferred from a host computer 16 to the printer 10 in the exact sequence in which the characters are to be printed on the printed page 12. If the user wishes to print the message in a different location on the printed page 12, the host computer 16 will transfer to the printer 10 a series of ASCII character data bytes corresponding to line feed characters, tabs, spaces, and the like. Thus, the printer 10 only receives the data and prints the data, and does not perform any data processing such as calculating positions for graphics data or plotting lines as may be done with more sophisticated printers such as a laser printer.
An I/O interface 14 within the host computer 16 controls the transfer of data from the host computer to the printer 10. The I/O interface 14 first checks the status of the printer 10 to make sure that the printer is ready to receive data from the host computer 16. A status line 17 within a printer interface 18 indicates the current status of the printer 10. A central processor unit (CPU) 22 within the host computer 16 transfers a byte of data to the I/O interface 14 from a memory 24 or other suitable storage location. The CPU 22 is coupled to the memory 24 and the I/O interface 14 by a bus 26 that carries data and control signals. After a delay, caused by propagation of the data on an interface cable 28 from the I/O interface 14 to the printer interface 18, the byte of data appears at the inputs to the printer interface 18. The I/O interface 14 waits a predetermined period of time to allow the data lines to settle at the inputs of the printer interface 18 and then asserts a control line to transfer the data to the printer 10. The printer interface 18 changes the logic state of the status line 17 to indicate that the printer 10 is busy and cannot accept additional data. When ready for the next data byte, the printer 10 changes the logic state of the status line 17 to indicate to the host computer 16 that the next byte of data can be transferred to the printer. This process is repeated for every data byte transferred from the host computer 16 to the printer 10.
FIG. 2 illustrates the typical timing waveforms for a data I/O transfer using the Centronics Compatible standard. As discussed above, the I/O interface 14 must first check the status of the printer 10. The status line 17, which is typically called the BUSY status line within the printer 10 indicates the current status of the printer. If the BUSY line is at a logic high level, the printer 10 is busy and cannot accept data. If the printer can accept data, the BUSY line is at a logic low level. Note that the terms "high" and "low" refer to the high logic level and the low logic level, respectively.
Data is transferred from the host computer 16 to the printer 10 on the falling edge of a STROBE control line as it goes low. This is sometimes referred to as "asserting" the STROBE line. The term "assert" refers to making a signal logically true, regardless of whether the signal is active high or low. Conversely, the term "deasserting" refers to making a signal line logically false, regardless of whether the signal is active high or low.
When the I/O interface 14 in the host computer 16 transfers the data, there will be a period of time during which the data signals are propagating down the interface cable 28 from the host computer 16 to the printer 10. In addition, some hardware, such as data registers or latches (not shown) within the printer interface 18, require that the data lines be settled for a period of time before the clock changes states to enter the data. This time, typically called a data setup time, may be as high as 50 nanoseconds. A typical I/O interface 14 may not assert the STROBE line for several microseconds after the data has been transferred to allow for propagation delay and data setup requirements. Under the IEEE P1284 standard for the Compatible Mode, the data lines must be settled in a logic high or low level for at least 500 nanoseconds before the STROBE line goes low, as indicated by the reference letter A in FIG. 2. The STROBE line must stay low for at least 500 nanoseconds, as indicated by the reference letter B, however older Centronics Compatible interfaces may keep the STROBE line low for as long as 5 microseconds. Under IEEE P1284, the data must remain stable for at least 500 nanoseconds after the STROBE line returns high, as indicated by the reference letter C in FIG. 2.
The BUSY line in the printer changes states from a low logic level to a high logic level in response to the assertion of the STROBE line. Under IEEE P1284, the BUSY line must go high within 500 nanoseconds of the STROBE line going low, as indicated by the reference letter D, and must remain high for at least 500 nanoseconds, as indicated by the reference letter E. Note that there is no maximum time specified for the BUSY line to be high. This is due to the fact that printer activities cannot be predicted. For example, if the buffer (not shown) in which the data is stored in the printer becomes full, the BUSY line may remain high for an indeterminate period of time. Similarly, if the printer 10 has an error such as a paper jam, the BUSY line will remain high.
In addition to the BUSY line, another status line, ACK, indicates that the printer 10 has received the data. The ACK line goes low after the BUSY line goes high and must remain low for at least 500 nanoseconds, as indicated by the reference letter F. The BUSY line returns low no sooner than the setting of the ACK line to a high level, as indicated by the reference letter G. When the BUSY line returns low, the next transfer cycle may begin immediately. This entire cycle is repeated for each data byte transferred from the host computer 16 to the printer 10.
As can readily be seen from the illustration of FIG. 2, the transfer of a single byte of data takes several clock cycles of the computer clock. The IEEE P1284 Compatible Mode interface must perform this same sequence for each byte of data transferred to the printer. If one assumes an I/O transfer cycle of 1.0 megabytes/second, then the maximum data transfer rate for the IEEE P1284 Compatible Mode printer interface is 200 Kbytes/second. This data transfer rate is slow when one considers that the host computer may not be able to perform other tasks while the document is being printed.
Therefore, it can be appreciated that there is a significant need for an system and method of improving the data transfer rate from a host computer to a printer without the need for hardware changes within the host computer or a special printer cable.